#ifndef LW_LOG_H
#define LW_LOG_H

#include <stdio.h>
#include <stdint.h>
#include <time.h>

// Include EasyLogger
#include "elog.h"

#ifdef __cplusplus
extern "C" {
#endif

// 日志级别定义
typedef enum {
    LW_LOG_NONE  = 0,
    LW_LOG_ERROR = 1,
    LW_LOG_WARN  = 2,
    LW_LOG_INFO  = 3,
    LW_LOG_DEBUG = 4
} lw_log_level_t;

// 日志配置结构体
typedef struct {
    lw_log_level_t level;           // 日志级别
    FILE* output;                   // 输出文件指针
    int enable_timestamp;          // 是否启用时间戳
    int enable_color;              // 是否启用颜色输出
} lw_log_config_t;

// 全局日志配置
extern lw_log_config_t g_log_config;

// 初始化日志系统
void lw_log_init(lw_log_level_t level, FILE* output, int enable_timestamp, int enable_color);

// 设置日志级别
void lw_log_set_level(lw_log_level_t level);

// 日志输出函数
void lw_log(lw_log_level_t level, const char* tag, const char* format, ...);

// 不同级别的日志宏定义
#define LW_LOGE(tag, format, ...) elog_error(tag, format, ##__VA_ARGS__)
#define LW_LOGW(tag, format, ...) elog_warn(tag, format, ##__VA_ARGS__)
#define LW_LOGI(tag, format, ...) elog_info(tag, format, ##__VA_ARGS__)
#define LW_LOGD(tag, format, ...) elog_debug(tag, format, ##__VA_ARGS__)

#ifdef __cplusplus
}
#endif

#endif // LW_LOG_H